#!/bin/sh
#
# $Header: opsm/cvutl/cvuhelper.sbs /unix/27 2012/11/23 19:37:37 dsaggi Exp $
#
# cvuhelper.sbs 
#
# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 
#
#    NAME
#      cvuhelper.sbs - Helper tool to CVU to retrieve compatible clusterware home 
#
#    DESCRIPTION
#      This tool is a helper tool that is used by CVU to retrieve information
#      about the clusterware home. This tool is required at all times by CVU
#      to call heavyweight API's. This tool is not expected to perform any remote 
#      operations.
#
#    NOTES
#      
#

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
export PATH

ECHO=echo
AWK=awk
SED=sed

if [ $# -lt 5 ];
then
   $ECHO "<CVH_EMSG>"
   $ECHO " "
   $ECHO "ERROR: "
   $ECHO "Usage $0 <GI_HOME> <CVUHELPER_VERSION> <JAR_FILE_PATH> <CV_HOME> <COMMAND> [<args>]"
   $ECHO "</CVH_EMSG><CVH_ERES>2</CVH_ERES><CVH_VRES>2</CVH_VRES>"
   exit 1
fi
  
ORACLE_HOME=$1
GI_VERSION=$2
CVUHELPER_CLASS=helper$2.CVUHelper$2
CVUHELPERJAR_PATH=$3
CV_HOME=$4
shift 4

export ORACLE_HOME

REM_ENV="-DCV_HOME=$CV_HOME -DGI_HOME=$ORACLE_HOME"

if [ ! -f $CVUHELPERJAR_PATH ];
then
   $ECHO "<CVH_EMSG>$CVUHELPERJAR not found in standard place </CVH_EMSG><CVH_ERES>2</CVH_ERES><CVH_VRES>2</CVH_VRES>"
   exit 1
fi


setJRE14Options()
{
  PLATFORM=`/bin/uname`
  case $PLATFORM in
  SunOS)
       # Bug 4620768. Unset LD_LIBRARY_PATH_64 
       unset LD_LIBRARY_PATH_64 
       arch=`/bin/uname -i`
       if [ "$arch" != "i86pc" ]
       then
         JRE_OPTS=-d64
       fi
       ;;
      *) JRE_OPTS=
  esac
}

setDefaultJREOptions()
{
  PLATFORM=`/bin/uname`
  case $PLATFORM in
  HP-UX) arch=`/bin/uname -m`
       JRE_OPTS=-d64
       #Bug 10111014: Add  -XX:+UseC2 to JRE_OPTS on HP-IA
       if [ "$arch" = "ia64" ]
       then
         VERSION=`$JRE -fullversion 2>&1 | $CUT -d'"' -f2 | $AWK -F\- '{print $1}'`;
         DYN=" -XX:+UseC2"
         VER1=`echo $VERSION|$CUT -d'.' -f1` 
         VER2=`echo $VERSION|$CUT -d'.' -f2` 
         VER3=`echo $VERSION|$CUT -d'.' -f3` 
         VER4=`echo $VERSION|$CUT -d'.' -f4` 
         if [ $VER1 -eq 1 -a $VER2 -eq 5 -a $VER3 -eq 0 -a $VER4 -gt 5 -a $VER4 -le 20 ]
         then
           JRE_OPTS="$JRE_OPTS $DYN"
         fi 
       fi
       ;;
  AIX) 
       JRE_OPTS=-d64
     ;;
  Linux) 
       arch=`/bin/uname -m`
       if [ "$arch" = "ppc64" -o "$arch" = "x86_64" -o "$arch" = "s390x" ]
       then
         JRE_OPTS=-d64
       fi
      ;;
  SunOS)
       arch=`/bin/uname -p`
       JRE_OPTS=-d64
       ;;
  esac
}

setJREOptions()
{
  RJDKVER=`${JRE} -Xmx32m -version 2>&1 | ${AWK} '{ if (NR==1) { print $3 }}' | ${SED} -e 's/\"//g' | ${AWK} -F. '{print $1$2}'`
  if [ $RJDKVER -le 14 ]
  then
    setJRE14Options
  else
    setDefaultJREOptions
  fi
}


SRVMJAR=$ORACLE_HOME/jlib/srvm.jar
LDAPJAR=$ORACLE_HOME/jlib//ldapjclnt12.jar
NETCFGJAR=$ORACLE_HOME/jlib//netcfg.jar
SRVMHASJAR=$ORACLE_HOME/jlib/srvmhas.jar
SRVMASMJAR=$ORACLE_HOME/jlib/srvmasm.jar
GNSJAR=$ORACLE_HOME/jlib/gns.jar
OUIJARS=$ORACLE_HOME/oui/jlib/OraInstaller.jar:$ORACLE_HOME/oui/jlib/OraPrereq.jar:$ORACLE_HOME/oui/jlib/prov_fixup.jar:$ORACLE_HOME/oui/jlib/xmlparserv2.jar:$ORACLE_HOME/oui/jlib/share.jar:$ORACLE_HOME/oui/jlib/orai18n-mapping.jar
OPATCHJARS=$ORACLE_HOME/OPatch/jlib/opatch.jar:$ORACLE_HOME/OPatch/jlib/opatchext.jar:$ORACLE_HOME/OPatch/jlib/opatchprereq.jar:$ORACLE_HOME/OPatch/jlib/opatchactions.jar:$ORACLE_HOME/OPatch/jlib/opatchfmw.jar:$ORACLE_HOME/OPatch/jlib/opatchutil.jar

if [ -d $ORACLE_HOME/jdk/jre ];
then
   JREDIR=$ORACLE_HOME/jdk/jre
else
   $ECHO "<CVH_EMSG>Directory $ORACLE_HOME/jdk/jre is not a valid JRE location</CVH_EMSG><CVH_ERES>2</CVH_ERES>"
   exit 1
fi

JRE=$JREDIR/bin/java
JREJAR=$JREDIR/lib/rt.jar

CLASSPATH=$JREJAR:$CVUHELPERJAR_PATH:$LDAPJAR:$NETCFGJAR:$SRVMJAR:$SRVMHASJAR:$GNSJAR:$SRVMASMJAR:$OUIJARS:$OPATCHJARS

if [ -n "$SRVM_TRACE" ]
then
   if [ "$SRVM_TRACE" = "false" ]  || [ "$SRVM_TRACE" = "FALSE" ]
   then
     TRACE="-DTRACING.ENABLED=false"
   else
       TRACE="-DTRACING.ENABLED=true -DTRACING.LEVEL=2"
   fi
fi

if [ -n "$CV_TRACELOC" ];
then
  TRACELOC="-DCV_TRACELOC=$CV_TRACELOC"
fi

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH



# Set the shared library path for JNI shared libraries
# A few platforms use an environment variable other than LD_LIBRARY_PATH
PLATFORM=`/bin/uname`
case $PLATFORM in
  HP-UX) arch=`/bin/uname -m`
       # bugfix 5404049
       if [ -z "$JAVA_HOME" ];
       then
         JAVA_HOME=$JREDIR/..
         export JAVA_HOME
       fi
       SHLIB_PATH=$LD_LIBRARY_PATH
       export SHLIB_PATH
       ;;
  AIX)
       LIBPATH=$LD_LIBRARY_PATH
       export LIBPATH
     ;;
  Linux) arch=`/bin/uname -m`
       ;;
  SunOS)
       # Bug 4620768. Unset LD_LIBRARY_PATH_64
       unset LD_LIBRARY_PATH_64
       ;;
esac

###################################################################################################
# For release 10.2.0.X, library search paths need to contain path(s) for 32-bit libraries as well #
###################################################################################################

if [ `expr "${GI_VERSION}" : "102"` = 3 ]
then
  PLATFORM=`uname`
  case $PLATFORM in
    HP-UX) arch=`uname -m`
       if [ "$arch" = "ia64" ]
       then
           LD_LIBRARY_PATH=$CV_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
           export LD_LIBRARY_PATH
       fi
       SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$SHLIB_PATH
       export SHLIB_PATH
       ;;
    AIX) LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LIBPATH
       export LIBPATH
       ;;
    Linux) arch=`uname -m`
       # Linux ( x86_64 ) => LD_LIBRARY_PATH lib32
       if [ "$arch" = "x86_64" ] || [ "$arch" = "s390x" ]
       then
         LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
         export LD_LIBRARY_PATH
       fi
       ;;
    SunOS) arch=`/usr/bin/isainfo -k`
       # Solaris  ( x86_64 ) => LD_LIBRARY_PATH lib32
       if [ "$arch" = "amd64" ]
       then
         LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
         export LD_LIBRARY_PATH
       fi
       ;;
  esac
fi

setJREOptions

# Run cvuhelper driver
$JRE $JRE_OPTS -classpath $CLASSPATH $REM_ENV $TRACE $TRACELOC oracle.ops.verification.helper.$CVUHELPER_CLASS "$@"
exit $?
